package com.example.demos.controller;

import java.util.Arrays;

/*
 * 用来存放一系列数据类型相同的元素（数据的类型需要一样）
 * 数组是一种引用数据类型
 * 
 * 数组定义的格式
 * 格式1：
 *     数据类型[] 数组名 = new 数据类型[数组长度];
 * 格式2：
 * 	   数据类型[] 数组名 = [值1，值1，值1，值1，值1];//已知数据
 * 格式3：
 * 	   数据类型[] 数组名 = new 数据类型[值1，值1，值1，值1，值1];
 * 
 * 注意：
 * 1.直接输出数组名会输出数组在内存中的地址，如果需要输出数组中的内容，需要通过方法Arrays.toString访问
 * 2.如果定义的数组中没有手动存放数据的话，数组中会默认存放，对应数据类型的默认值
 *   int 默认值 0
 *   boolean 默认值 faulse
 *   double 默认值 0.0
 *   String(引用数据类型的) 默认值 都是null
 * 3.数组定义时，必须制定长度
 * 
 */
public class ArrayElement {
	public static void main(String[] args) {
		int b = 0;
		b = 1;
		System.out.println(b);
		
		int [] ary = new int[3];//表示定义了一个长度为3的数组， 数组里只能放int类型的数据
		double [] ds = new double[5];
		boolean [] bs = new boolean[3];
		String [] sts = new String[3];

		System.out.println(ary);//输出的是数组地址
		System.out.println(ds);
		System.out.println(Arrays.toString(ary));
		System.out.println(Arrays.toString(ds));
		System.out.println(Arrays.toString(bs));
		System.out.println(Arrays.toString(sts));

		String [] names = {"sdf","dgsdg","fgg"};
		
		System.out.println(Arrays.toString(names));

		String [] books = new String[]{"诛仙","缸体","我靠"};
		System.out.println(Arrays.toString(books));
		//数组使用
		//获取长度 数组名.length
		System.out.println(books.length);
		//获取元素 数组名[下标（位置）]
		System.out.println(books[1]);
		//获取最后一个元素 数组名[数组名.length - 1）]
		System.out.println(books[books.length - 1]);
		//修改某一个元素 数组名[位置] = 值
		books[books.length - 1] = "草拟吗";
		System.out.println(Arrays.toString(books));
		//遍历数组-核心原理，用下标将数组中元素取出
		String ns = Arrays.toString(books);
		for(int i = 0;i < books.length;i++) {
			System.out.println("第"+(i+1)+"次"+"循环："+ books[i]);

		}
		
		//遍历数组,给新建的数组赋值
		char [] cs = new char[] {'唱','整'};
		
		String charNames = new String(cs,0,cs.length);
		System.out.println(charNames);

		System.out.println("遍历前:" + Arrays.toString(ary));
		for(int j = 0;j < ary.length;j++) {
			ary[j] = j * 10;
		}
		System.out.println("遍历后:" + Arrays.toString(ary));

	}
}
